/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.pima.gestrest.controller;

import com.pima.gestrest.business.CadreEJB;
import com.pima.gestrest.model.Cadre;
import javax.faces.bean.ManagedBean;
import javax.ejb.EJB;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.faces.bean.SessionScoped;
import javax.faces.component.html.HtmlDataTable;
import javax.faces.model.ListDataModel;
import javax.faces.model.SelectItem;
/**
 *
 * @author Mat
 */

@ManagedBean
@SessionScoped
public class CadreController {

    // ======================================
    // =             Attributes             =
    // ======================================

    @EJB
    private CadreEJB cadreEJB;
    private HtmlDataTable dataTable;
    private Cadre cadre = new Cadre();
    private ListDataModel cadreList; // j'ai utilisé un ListDataModel et pas List parce que cela permet de retrouver l'élément sélectionné dans la liste (pour l'édition d'un livre)
    private ArrayList<SelectItem> itemList;
    
    private void updateItemList()
    {
        itemList = new ArrayList<SelectItem>(cadreEJB.getItems());
    }

    private void updateCadreList() {
        cadreList = new ListDataModel(cadreEJB.findAll());
    }

    // ======================================
    // =           Public Methods           =
    // ======================================

    public String doNew() {
        cadre = new Cadre();
        return "../secured/newCadre.faces";
    }

    public String doCreate() {
        cadreEJB.create(cadre);
        return "../resources/listCadres.faces";
    }

    public String doDelete() {
        List<Cadre> cadres = (List<Cadre>)cadreList.getWrappedData();
        cadreEJB.delete(onlySelected(cadres));
        return "../resources/listCadres.faces";
    }

    private List<Cadre> onlySelected(List<Cadre> list) {
        for (Iterator<Cadre> it = list.iterator(); it.hasNext(); ) {
            if (!(it.next().isSelected()))
                it.remove();
        }
        return list;
    }

    public String viewDetail () {
        cadre = (Cadre)cadreList.getRowData();
        return "../resources/viewCadre.faces";
    }
    
    public String doEdit() {
        //cadre = (Cadre)cadreList.getRowData(); // Voici comment on trouve le livre sélectionné
        return "../secured/editCadre.faces";
    }

    public String doSave() {
        cadreEJB.update(cadre);
        return "../resources/listCadres.faces";
    }
    // ======================================
    // =          Getters & Setters         =
    // ======================================

    public Cadre getCadre() {
        return cadre;
    }

    public void setCadre(Cadre cadre) {
        this.cadre = cadre;
    }

    public ListDataModel getCadreList() {
        updateCadreList();
        return cadreList;
    }

    public void setCadreList(ListDataModel cadreList) {
        this.cadreList = cadreList;
    }

    public HtmlDataTable getDataTable() {
        return dataTable;
    }

    public void setDataTable(HtmlDataTable dataTable) {
        this.dataTable = dataTable;
    }

    public List<SelectItem> getItemList () {
        updateItemList();
        return itemList;
    }

    public void setItemList (ArrayList<SelectItem> list) {
        this.itemList = list;
    }

}